<template>
  <h1>双向绑定指令</h1>
  <!--  文本的绑定-->
  {{ info }}
  <!--  属性的绑定-->
  <input type="text" :value="info">
  <hr>
  <!-- DOM listener 负责数据监听 页面内容改变 info变量的值将随之改变 -->
  <!--
    双向绑定: 将页面数据与响应式变量的值进行绑定
      1)响应式变量的值会显示在绑定的html文件中
      2)页面html元素发生改变 绑定的响应式变量的值也会随之改变
  -->
  <input type="text" v-model="info">

  <hr>

  <h3>登陆界面</h3>
  <input type="text" placeholder="请输入用户名" v-model="user.username">
  <input type="password" placeholder="请输入密码" v-model="user.password">
  <br>
  性别:
  <input type="radio" name="gender" v-model="user.gender" value="M">男
  <input type="radio" name="gender" v-model="user.gender" value="W">女
  <br>
  <button @click="login()">点击登录</button>
</template>

<script setup>
import {ref} from "vue";

const info = ref('双向绑定测试文段');

// 响应式变量不仅能声明值变量 也可以声明对象变量
// 双向绑定 可以通过设置响应式变量的初始值来设置默认值
const user = ref({username: '张三', password: '123456', gender: 'M'})
const login = () => {
  // JS语句中 若想打印vue语句 需要使用`.value`进行打点打印
  console.log(user.value);
  // 对单个属性值进行打印时 属性名最后打点
  console.log(user.value.username);
  console.log(user.value.password);
  console.log(user.value.gender);
}
</script>

<style scoped>

</style>